home *** CD-ROM | disk | FTP | other *** search
/ Gekikoh Dennoh Club 5 / Gekikoh Dennoh Club Vol. 5 (Japan).7z / Gekikoh Dennoh Club Vol. 5 (Japan) (Track 01).bin / internet / tcppack / tcppackb.lzh / src / libnetwork / iface.c < prev    next >
C/C++ Source or Header  |  1994-06-10  |  3KB  |  139 lines

  1. /*
  2.  * iface.c
  3.  *
  4.  * Copyright (C) 1994 First Class Technology.
  5.  */
  6.  
  7. #include<stdio.h>
  8. #include<stdlib.h>
  9. #include<string.h>
  10.  
  11. #include"tcpipdrv.h"
  12. #include"network.h"
  13.  
  14. _ti_func search_ti_entry (void);
  15.  
  16. /************************************************
  17.  *                        *
  18.  ************************************************/
  19. iface *
  20. get_iface_list (void)
  21. {
  22.   _ti_func func = search_ti_entry ();
  23.  
  24.   if (func)
  25.     return (iface *)func (_TI_get_iface_list, NULL);
  26.  
  27.   return 0;
  28. }
  29.  
  30. /************************************************
  31.  *                        *
  32.  ************************************************/
  33. iface *
  34. iface_lookup (long ipaddr)
  35. {
  36.   iface *top, *cur;
  37.  
  38.   top = get_iface_list ();
  39.   for (cur = top; cur != NULL; cur = cur->next)
  40.     {
  41.       if (ipaddr == cur->my_ip_addr)
  42.     break;
  43.     }
  44.  
  45.   return cur;
  46. }
  47.  
  48. /************************************************
  49.  *                        *
  50.  ************************************************/
  51. iface *
  52. iface_lookupn (char *name)
  53. {
  54.   iface *top, *cur;
  55.  
  56.   top = get_iface_list ();
  57.   for (cur = top; cur != NULL; cur = cur->next)
  58.     {
  59.       if (!strcmp (name, cur->name))
  60.     break;
  61.     }
  62.  
  63.   return cur;
  64. }
  65.  
  66. /************************************************
  67.  *                        *
  68.  ************************************************/
  69. int
  70. ismyipaddr (long ipaddr)
  71. {
  72.   iface *top, *cur;
  73.  
  74.   top = get_iface_list ();
  75.   for (cur = top; cur != NULL; cur = cur->next)
  76.     {
  77.       if (ipaddr == cur->my_ip_addr)
  78.     return 1;
  79.     }
  80.  
  81.   return 0;
  82. }
  83.  
  84. /************************************************
  85.  *                        *
  86.  ************************************************/
  87. long *
  88. get_my_ipaddr (int *n)
  89. {
  90.   iface *top, *cur;
  91.   long *array, *p;
  92.  
  93.   top = get_iface_list ();
  94.   *n = 0;
  95.   for (cur = top; cur != NULL; cur = cur->next)
  96.     (*n)++;
  97.  
  98.   array = malloc (sizeof (long) * *n);
  99.   if (!array)
  100.     return NULL;
  101.  
  102.   p = array;
  103.   for (cur = top; cur != NULL; cur = cur->next)
  104.     *p++ = cur->my_ip_addr;
  105.  
  106.   return array;
  107. }
  108.  
  109. /************************************************
  110.  *                        *
  111.  ************************************************/
  112. iface *
  113. get_new_iface (char *name)
  114. {
  115.   _ti_func func = search_ti_entry ();
  116.  
  117.   if (func)
  118.     return (iface *)func (_TI_get_new_iface, (long *)name);
  119.  
  120.   return 0;
  121. }
  122.  
  123. /************************************************
  124.  *                        *
  125.  ************************************************/
  126. void
  127. link_new_iface (iface *n_i)
  128. {
  129.   _ti_func func = search_ti_entry ();
  130.  
  131.   if (func)
  132.     {
  133.       func (_TI_link_new_iface, (long *)n_i);
  134.       return;
  135.     }
  136.  
  137.   return;
  138. }
  139.